﻿<!-- #include file="ding.asp" -->
<!-- #include file="mymin.asp" -->
<!-- #include file="md5.asp" -->
<%Call Head()

Dim act,idd
act = Request("action")
idd = Request("id")
if idd<>"" and IsNumeric(idd) Then
	idd=int(idd)
Else
	idd=1
end if

'只有站长且ID号不为1时为可编辑状态，用于编辑权限
Function ifEditable()
	If idd<>1 and keyid=1 Then ifEditable=True:Exit Function
	ifEditable=False
End Function

'权限控制	keyid表示当前用户ID，idd表示操作对象ID，默认为1
'	0表示站长，合法
'	1表示非站长，合法
'	2表示站长且非当前用户，合法
'	3表示非站长且非当前用户，不合法
Dim user_level
if KEYid<>1 then
	user_level=1'非站长
else
	user_level=0
end if
if KEYid<>idd then user_level=user_level+2'非当前用户


IF  act="view" Then
	if user_level=3 then
		Call Error("<card title=""警告""><p>权限不足！")
	end if
	call view
elseiF  act="del" Then
	if user_level<>2 then'站长使用，且不能删除自己
		Call Error("<card title=""警告""><p>权限不足！")
	end if
	call del
elseiF  act="edit" Then
	if user_level=3 then
		Call Error("<card title=""警告""><p>权限不足！")
	end if
	call edit
elseiF  act="add" Then
	if user_level<>0 then'增加用户时没有对象ID
		Call Error("<card title=""警告""><p>权限不足！")
	end if
	call add
elseiF  act="save" Then
	if user_level=3 then
		Call Error("<card title=""警告""><p>权限不足！")
	end if
	call save
else
	call index
end if

Function index()
	if keyid<>1 Then response.redirect "guanli.asp?sid="&sid&"&action=view&id="&keyid%>
	<card id="index" title="设定管理员"><p align="left">
	<%w systemMsg%>
	管理员列表:<br/>
	<%
	Dim rs,sql,pagesize,count,page,i,keyname
	Set Rs = Server.CreateObject("Adodb.Recordset")
	Sql = "SELECT * FROM 74hu_admin order by id asc"
	Rs.Open Sql,conn,1,1
	If Not rs.eof Then
	PageSize=10
	Count=rs.recordcount
	page=getN("page",1)
	if page<1 then page=1
	pagecount=(count+pagesize-1)\pagesize
	if page>pagecount then page=pagecount
	rs.move(pagesize*(page-1))
	For i=1 To PageSize
	If rs.eof Then Exit For
	keyname=" <br/>管理范围:全部"
	if rs("classids")<>"" then keyname=" <br/>管理范围:"&rs("classids")
	if rs("key")=2 then keyname="普通管理员"&keyname
	if rs("key")=0 then keyname="超级管理员"
	if rs("id")=1 then keyname="站长"
	%><%=i+(page-1)*PageSize%>.<a href='guanli.asp?sid=<%=sid%>&amp;action=view&amp;id=<%=rs("id")%>'><%=nowml(rs("username"))%></a><br/>管理权限:<%=keyname%><br/>
	最近登录:<%=nowml(fordate(rs("dltime")))%><br/>--------<br/>
	<%
	rs.moveNext
	Next
	w showPage("guanli.asp", "", page, pageCount)&"<br/>"
	Else
	%>
	(没有管理)
	<%end if
	Rs.close
	set rs=nothing
	%><br/>※温馨提示：<br/>
	1、超级管理员是除了站长外最大的管理员，拥有绝大多数管理权限。<br/>
	2、普通管理员为文章栏目管理员，站长可以修改他们的管理范围。<br/>
	3、管理范围仅对普通管理员有效，其中的数字是对应文章栏目的ID。<br/>
	4、为了方便站长管理和安全原因，只有站长可以修改自己的用户名。<br/>
	5、如果对管理权限有自己的见解和看法不妨到<a href="http://74hu.cn">七色虎 74hu.cn</a>反馈。<br/><%
	Response.Write("<br/><a href='guanli.asp?sid="&sid&"&amp;action=add'>[添加管理]</a><br/>")
end Function
Function add()%>
	<card id="add" title="添加管理"><p>
	用户:<br/><input name="username<%=time_r%>" maxlength="16" /><br/>
	密码:<br/><input name="password<%=time_r%>" /><br/>
	高密:<br/><input name="password2<%=time_r%>" /><br/>
	权限:<br/><select name="keyvar<%=time_r%>">
	<option value="0">超级管理员</option>
	<option value="2">普通管理员</option>
	</select><br/>
	管理范围:<br/><input name="classids<%=time_r%>" /><br/>
	<anchor>添加
	<go href="guanli.asp?sid=<%=sid%>&amp;action=save&amp;edit=add" method="post">
	<postfield name="username" value="$(username<%=time_r%>)" />
	<postfield name="password" value="$(password<%=time_r%>)" />
	<postfield name="password2" value="$(password2<%=time_r%>)" />
	<postfield name="keyvar" value="$(keyvar<%=time_r%>)" />
	<postfield name="classids" value="$(classids<%=time_r%>)" />
	</go>
	</anchor><br/>
	※温馨提示：<br/>
	1、超级管理员是除了站长之外最大的管理员，拥有绝大多数管理权限，普通管理员为文章栏目管理员。<br/>
	2、管理范围仅对普通管理员有效，格式为【1,2,4】，1、2、4是对应文章栏目ID，中间用英文逗号分隔，留空表示无限制。<br/><br/>
	<a href="guanli.asp?sid=<%=sid%>">[设定管理]</a><br/>
	<%
end Function
Function edit()
	id=idd
	Set Rs = Server.CreateObject("Adodb.Recordset")
	Sql = "SELECT * FROM 74hu_admin where id="&id
	Rs.Open Sql,conn,1,1
	if not (rs.bof and rs.eof)  then %>
	<card id="add" title="修改管理"><p>账户名:
	<%If user_level=0 Then%>
	<br/><input name="username<%=time_r%>"/>
	<%Else
	Response.Write rs("username")
	End If%><br/>
	密码:<br/><input name="password<%=time_r%>" value="" /><br/>
	高级密码:<br/><input name="password2<%=time_r%>" value="" /><br/>
	<%if user_level=2 then%>
	管理范围:<br/><select name="keyvar<%=time_r%>" value="<%=rs("key")%>">
	<option value="0">超级管理员</option>
	<option value="2">普通管理员</option>
	</select><br/>
	管理范围:<br/><input name="classids<%=time_r%>" value="<%=Trim(rs("classids"))%>"/>
	<%end if%>
	<br/><anchor>修改
	<go href="guanli.asp?sid=<%=sid%>&amp;action=save&amp;edit=edit" method="post">
	<%If user_level=0 Then%>
	<postfield name="username" value="$(username<%=time_r%>)" />
	<%End If%>
	<postfield name="id" value="<%=id%>" />
	<postfield name="password" value="$(password<%=time_r%>)" />
	<postfield name="password2" value="$(password2<%=time_r%>)" />
	<%if user_level=2 then%>
	<postfield name="keyvar" value="$(keyvar<%=time_r%>)" />
	<postfield name="classids" value="$(classids<%=time_r%>)" />
	</go>
	</anchor><br/>
	※温馨提示：<br/>
	1、超级管理员是除了站长之外最大的管理员，拥有绝大多数管理权限，普通管理员为文章栏目管理员。<br/>
	2、管理范围仅对普通管理员有效，格式为【1,2,4】，1、2、4是对应文章栏目ID，中间用英文逗号分隔，留空表示无限制。<br/><br/>
	<%else%>
	</go>
	</anchor><br/>
	※温馨提示：修改管理员信息将会强制重新登录。<br/>
	<%end if%>
	<a href="guanli.asp?sid=<%=sid%>">[设定管理]</a><br/>
	<%else%>
	<card id="index" title="出错啦"><p>没有该管理!<br/>
	<%end if
	Rs.close
	set rs=nothing
end Function
Function view()
	id=idd
	if id=""  then%>
	<card id="index" title="出错啦"><p>ID无效.<br/>
	<%else%>
	<card id="index" title="设定管理">
	<p>
	<%
	Set Rs = Server.CreateObject("Adodb.Recordset")
	Sql = "SELECT username,dltime,lastip FROM 74hu_admin where id="&id
	Rs.Open Sql,conn,1,1
	if not (rs.bof and rs.eof)  then %>
	账户名:<%=rs("username")%><br/>
	最近登录:<%=fordate(rs("dltime"))%><br/>
	登录者IP:<%=rs("lastip")%><br/>
	<a href='guanli.asp?sid=<%=sid%>&amp;action=edit&amp;id=<%=id%>'>[修改]</a>
	<%if user_level=2 then%>
	<a href='guanli.asp?sid=<%=sid%>&amp;action=del&amp;id=<%=id%>'>[删除]</a>
	<%end if%>
	<br/><a href="guanli.asp?sid=<%=sid%>">[设定管理]</a><br/>
	<%else%>
	暂无管理!<br/>
	<%end if
	Rs.close
	set rs=nothing
	end if
end Function
Function del()
	id=idd
	if id=""  then%>
	<card id="index" title="出错啦"><p>ID无效.<br/>
	<%else
	if Request("del")="true" then
	set rs=server.CreateObject("adodb.recordset")
	Sql = "SELECT * FROM 74hu_admin where id="&id
	rs.open sql,conn,1,3
	if not (rs.bof and rs.eof)  then
	if id=1 then
	Call Error("<card title='删除管理员'><p>站长不能删除！")
	end if
	rs.delete
	end if
	Rs.close
	set rs=nothing%>
	<card id='index' title='删除管理员'><p>
	已成功删除该管理员!<br/>
	<a href="guanli.asp?sid=<%=sid%>">[设定管理]</a><br/>
	<%else%>
	<card id='index' title='删除管理员'><p>
	是否要删除该管理员?<br/>
	<a href='guanli.asp?sid=<%=sid%>&amp;action=del&amp;del=true&amp;id=<%=id%>'>[确定删除]</a><br/><anchor>返回上页<prev/></anchor><br/>
	<a href="guanli.asp?sid=<%=sid%>">[设定管理]</a><br/>
	<%end if
	end if
end Function
Function save()
	username=Trim(Request("username"))
	password=Trim(Request("password"))
	password2=Trim(Request("password2"))
	keyvar=Trim(Request("keyvar"))
	ids=Trim(Request("classids"))
	id=idd
	if user_level=2 then
		if keyvar="" or isnumeric(keyvar) =false then Call Error("<card title=""警告""><p>权限无效！")
		if ids<>"" and Not IsNumeric(replace(ids,",","")) then Call Error("<card title=""警告""><p>管理范围无效！")
	end if
	if user_level=0 and username=""  then errmsg=errmsg&"管理名称不能为空<br/>":flag=0
	if password=""  then errmsg=errmsg&"管理密码不能为空<br/>":flag=0
	if password2=""  then errmsg=errmsg&"管理高级密码不能为空<br/>":flag=0
	if Request("edit")="edit" then
		if id=""  then errmsg=errmsg&"ID无效<br/>":flag=0
		if user_level=0 then
			set rs=Server.CreateObject("ADODB.Recordset")
			rs.open"select ID from 74hu_admin where username='"&username&"' and id<>"&id,conn,1,1
			if not rs.eof then
				errmsg=errmsg&"管理员用户名已被使用<br/>":flag=0
			end if
			rs.close
			set rs=nothing
		end if
		if flag<>"0" then
			set rs=server.CreateObject("adodb.recordset")
			sql="select * from 74hu_admin where id="&id
			rs.open sql,conn,1,3
			if rs.eof then
				errmsg=errmsg&"ID无效<br/>":flag=0
			end if
			if user_level=0 then rs("username")=username
			rs("password")=md5(md5(password,16),32)
			rs("HU_admin")=md5(md5(password2,16),32)
			if user_level=2 then
				rs("key")=keyvar
				If ids<>"" Then rs("classids")=ids
			end if
			rs("sid")=onlysid()
			rs.update()
			rs.close
			set rs=nothing%>
			<card id="index" title="修改管理" ontimer="guanli.asp?sid=<%=sid%>"><timer value='10'/><p>
			修改管理成功<br/><br/>
			<a href="guanli.asp?sid=<%=sid%>">[设定管理]</a><br/>
		<%else
			Response.Write("<card id='index' title='添加管理出错' ><p>")
			Response.Write(""&errmsg&"<br/><anchor>[返回修改]<prev/></anchor><br/>")
		end if
	else
		if keyid<>1 then errmsg=errmsg&"站长才能使用此功能<br/>":flag=0
		set rs=Server.CreateObject("ADODB.Recordset")
		rs.open"select ID from 74hu_admin where username='"&username&"' and id<>"&id,conn,1,1
		if not rs.eof then
			errmsg=errmsg&"管理员用户名已被使用<br/>":flag=0
		end if
		rs.close
		set rs=nothing
		if flag<>"0" then
			set rs=server.CreateObject("adodb.recordset")
			sql="select * from 74hu_admin"
			rs.open sql,conn,1,3
			rs.addnew()
			rs("username")=username
			rs("password")=md5(md5(password,16),32)
			rs("HU_admin")=md5(md5(password2,16),32)
			rs("sid")=onlysid()
			rs("key")=keyvar
			rs("classids")=ids
			rs.update()
			Rs.close
			set rs=nothing%>
			<card id="index" title="添加管理" ontimer="guanli.asp?sid=<%=sid%>"><timer value='10'/>
			<p>
			添加管理成功<br/><br/>
			<a href="guanli.asp?sid=<%=sid%>">[设定管理]</a><br/>
		<%else
			Response.Write("<card id='index' title='添加管理出错' ><p>")
			Response.Write(""&errmsg&"<br/><anchor>[返回修改]<prev/></anchor><br/>")
		end if
	END IF
end Function

call CloseConn
%>
<a href="index.asp?sid=<%=sid%>">[后台管理]</a>
</p></card>
</wml>